package cn.flying.base.process.listener.chain;

/**
 * @description: 监听处理抽象类
 * @author: lvyong
 * @date: 2023年02月27日 13:55
 * @version: 1.0
 */
public abstract class AbstractHandler<T> {
    /**
     * 核心处理
     *
     * @param context 上下文
     * @param chain   调用链
     */
    public final void handle(HandleContext<T> context, HandlerChain chain) {
        //具体业务处理
        execute(context);
        //处理完成，交给下一个Handler
        chain.handler(context);
    }


    /**
     * 具体业务处理
     *
     * @param context
     */
    protected abstract void execute(HandleContext<T> context);
}
